home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 9 / Night Owl CD-ROM (NOPV9) (Night Owl Publisher) (1993).ISO / 039a / pds93a.zip / PDSJAN93.TXT < prev   
Text File  |  1993-02-04  |  87KB  |  2,225 lines

  1. *********************************************
  2. *********************************************
  3. Professional Development Series
  4. B  U  L  L  E  T  S
  5. *********************************************
  6. January 1993
  7. Volume 5, Number 1
  8. *********************************************
  9. *********************************************
  10.  
  11.  
  12. *********************************************
  13. *********************************************
  14. MAD'S COLUMN
  15. *********************************************
  16. *********************************************
  17.  
  18. Hello and welcome to the January 1993 issue of Bullets!
  19.  
  20. In past issues, I have touched on planned enhancements for
  21. developer support and developer programs. An exciting new
  22. enhancement you will soon be seeing in documents like the Novell
  23. Developers Guide is the SDK Grading System.
  24.  
  25. What is this SDK Grading System, you ask? Quite often, I find a
  26. disparity between the implied maturity of an SDK and the needs of
  27. the developer community. The SDK Grading System is structured to
  28. eliminate the guesswork that is sometimes associated with SDKs.
  29.  
  30. Some developers don't want to see an SDK unless it has been
  31. completely unit- and system-tested, with documentation either
  32. nicely bound or stored on a CD, and for which education classes and
  33. telephone support are available. Other developers are interested
  34. in an SDK at a very early stage, when the APIs are still forming,
  35. documentation is a less formal collection of header files and
  36. developer notes, and support is not yet provided.
  37.  
  38. To produce the SDK Grading System, input (in the form of grades)
  39. is gathered from the various groups (Engineering, Documentation,
  40. Marketing, Education, Testing, Support, etc.). This input is then
  41. combined to determine an overall grade for each SDK. An SDK's
  42. "grade" may change over time. We hope that this process will help
  43. Novell's developers establish their expectations for SDKs.
  44.  
  45. Happy_Programming!
  46.  
  47. Mad Poarch
  48. Director
  49. Developer Support/Service
  50.  
  51.  
  52.  
  53. *********************************************
  54. *********************************************
  55. ARTICLES:
  56. Getting Started with NetWare 4.0: Directoy Services
  57. *********************************************
  58. *********************************************
  59.  
  60. With NetWare 4.0, Novell has introduced Directory Services to
  61. replace the traditional NetWare bindery employed by previous
  62. versions. NetWare 4.0 Directory Services provide many new features
  63. and capabilities. Directory Services functionality is provided
  64. through an extensive new Application Program Interface (API).
  65.  
  66. This article presents a basic introduction to NetWare 4.0 Directory
  67. Services and is not intended to replace a thorough study of the
  68. documentation. It discusses several of the new features and
  69. advantages of Directory Services and offers a few tips and some
  70. general information to help you begin writing Directory Services
  71. applications more quickly. Converting existing applications from
  72. the bindery to Directory Services is also discussed. This article
  73. also includes example code that creates a Directory Services User
  74. class object to provide a starting point for using the Directory
  75. Services API.
  76.  
  77.  
  78. *********************************************
  79. Advantages of Directory Services
  80. *********************************************
  81.  
  82. NetWare 4.0 Directory Services provides a hierarchical database
  83. architecture to store network information. This architecture,
  84. combined with advanced techniques for retrieving and storing
  85. database information, provides a very flexible environment for
  86. application development.
  87.  
  88. One of the most beneficial Directory Services features is the
  89. network global scope of objects in the directory. An application
  90. with sufficient NetWare rights may retrieve information about any
  91. object in the directory without needing to be attached to any
  92. specific server. Access to a Directory Services object and its
  93. attribute information is limited solely by the access rights of the
  94. client, without regard to server connection status.
  95.  
  96. Another very useful feature that is built into the Directory
  97. Services API is that changes made to the directory database are
  98. atomic. When an application makes changes to the directory
  99. database, each change is completely defined before the change to
  100. this database is attempted. When the change is actually made to the
  101. database, if any part of the operation fails, the entire operation
  102. fails. This makes it virtually impossible for partially defined
  103. objects to exist in the directory.
  104.  
  105. With NetWare 4.0 Directory Services, no space is wasted in a
  106. directory database because no minimum size is defined for
  107. information describing objects and attributes. Objects are stored
  108. only once in the directory, reducing the overall size of the
  109. database.
  110.  
  111. The hierarchical database structure of Directory Services design
  112. reduces network traffic and makes retrieving objects and attributes
  113. very easy and efficient. You need not search the entire database
  114. tree to locate an object; searching may be performed at any level
  115. of the tree. Enhanced searching techniques allow objects to be
  116. located in a variety of ways, such as using relational expressions
  117. and wild cards. Also, objects in the directory do not advertise.
  118. Network traffic is generated only when an application asks the
  119. directory for information.
  120.  
  121. Finally, the entire NetWare 4.0 Directory Services Schema (the
  122. rules that define how the directory tree is constructed) may be
  123. modified and expanded by applications to suit specific needs. If
  124. the defined schema does not meet your needs, you may define an
  125. entirely new schema, or make modifications to parts of it. This
  126. feature adds greater flexibility to the NetWare 4.0 environment.
  127.  
  128.  
  129. *********************************************
  130. Developing Directory Services Applications
  131. *********************************************
  132.  
  133. Developing Directory Services applications requires an
  134. understanding of concepts and ideas very different from the
  135. knowledge required to use the bindery. When you begin studying the
  136. manuals related to Directory Service applications, there are
  137. several things that you should keep in mind:
  138.  
  139. *    You do not need to understand everything about Directory
  140.      Services to use the Directory Services API and begin writing
  141.      applications.
  142.  
  143. *    Though writing directory applications may initially seem to
  144.      be more complex than writing bindery applications, the
  145.      directory is often easier to use.
  146.  
  147. *    Novell will continue to support all bindery APIs for some
  148.      time, so you may continue to use bindery calls to perform
  149.      operations until you are familiar with their directory
  150.      equivalents. If you are already very familiar with the
  151.      bindery, it may in some cases be easier to write a bindery
  152.      application and then convert it to Directory Services.
  153.  
  154.  
  155. Context & Buffer Management
  156.  
  157. Begin learning how to write applications for the directory by
  158. investigating the APIs for context and buffer management. Almost
  159. all Directory Services functions require a context handle and a
  160. buffer. The context handle provides information about the location
  161. in the directory of the object to be manipulated, while the buffer
  162. defines the operation that you want to perform. Creating a context
  163. handle may only be required once for the life of an application,
  164. but the creation and definition of buffers will probably be
  165. required for each individual operation performed in the directory.
  166. There are several APIs that you can use to manipulate contexts.
  167. NWDSCreateContext() and NWDSFreeContext() are the only two that you
  168. will need to begin writing applications. There are many APIs that
  169. create, manipulate, and free buffers. The functions NWDSAllocBuf(),
  170. NWDSInitBuf(), and NWDSFreeBuf() create and initialize buffers and
  171. are almost always required when performing directory operations.
  172. The NWDSPut...() and NWDSGet...() series of functions are used to
  173. store and retrieve information in the allocated buffers. You will
  174. use some arrangement of these calls to define the buffers which you
  175. will then use as parameters to other functions to perform directory
  176. operations. None of the buffering functions will change any
  177. information stored in the directory. These functions are used only
  178. to define the information required to perform operations. The
  179. directory database is not modified until a directory call is made.
  180.  
  181. Once you are familiar with contexts and buffers, start making
  182. directory calls. Stay away from the more complex operations at
  183. first (such as defining new attributes or classes, manipulating
  184. access control lists, and creating partitions). Begin with some of
  185. the more straightforward operations, such as creating new objects
  186. and reading attribute information from existing objects.
  187.  
  188. The functions NWDSAddObject(), NWDSRead(), NWDSSearch(),
  189. NWDSModifyObject(), and NWDSRemoveObject(), are sufficient to
  190. perform many useful directory operations while introducing you to
  191. the capabilities of the directory database.
  192.  
  193. NWDSRead() and NWDSSearch() perform similar operations: NWDSRead()
  194. is used to get information about an object when you know the
  195. object's name, while NWDSSearch() is used to scan the entire
  196. directory for object names and return information about them.
  197. Remember that all of these functions except NWDSRemoveObject()
  198. require that the buffer initialization and manipulation functions
  199. be used to define the buffers necessary to make the directory call.
  200. NWDSRemoveObject() requires only the name of the object to be
  201. removed.
  202.  
  203. Constant values (defined in the header file NWDSDEFS.H) are used
  204. in buffer management functions to specify which operation is
  205. desired. For example, the constant DSV_ADD_ENTRY is passed to
  206. NWDSInitBuf() to define a buffer to be used when adding a new
  207. object to the directory. NWDSAddObject() is called with the defined
  208. buffer to add the object. DSV_MODIFY_ENTRY would be passed to
  209. NWDSInitBuf() to define a buffer to be used to change an object's
  210. definition in the database. The actual change is performed by
  211. calling NWDSModifyObject() with the defined buffer.
  212.  
  213. If attribute values (similar to property values in the bindery) are
  214. to be defined, NWDSPutAttrName() and NWDSPutAttrVal() are required
  215. to place the attribute names and values in the buffers. Attribute
  216. values may be defined when an object is created, or they may be
  217. added to existing objects by using NWDSModifyObject().
  218.  
  219. To perform these types of operations, review the Directory Services
  220. Schema documentation to learn what attribute information is
  221. available with the various object classes. The User object class
  222. is a good place to begin, since it is a very common class and is
  223. used frequently by the NetWare 4.0 directory. In the directory, the
  224. User object class is analogous to the OT_USER bindery object type
  225. in the bindery, so this class is probably a familiar place to
  226. start.
  227.  
  228.  
  229. Client & Server Considerations
  230.  
  231. There is very little distinction between the server and client
  232. environments when writing applications that use directory services.
  233. The only difference is that, when writing client applications, you
  234. must initialize the Unicode tables by calling the
  235. NWDSInitUnicodeTables() function before calling any Directory
  236. Services functions. The required Unicode files are provided with
  237. NetWare. Consult the documentation to determine where these files
  238. must be located to ensure that applications can find them during
  239. the initialization process.
  240.  
  241. The Directory Services header files use the constant value NLM to
  242. differentiate between server and client applications. You may also
  243. use this constant to compile conditionally for the two
  244. environments, making it unnecessary to have two versions of the
  245. source code.
  246.  
  247. Compilation in the two environments requires the use of several new
  248. header files that support the Directory Services APIs. For linking,
  249. there is a new import file for NLMs and there are new libraries for
  250. client applications. NLMs should include the DSAPI.IMP import file
  251. when linking, and client applications should include the NWNET.LIB,
  252. NWCALLS.LIB, and NWLOCALE.LIB libraries.
  253.  
  254.  
  255. *********************************************
  256. Converting Bindery-Based Apps
  257. to Directory Services
  258. *********************************************
  259.  
  260. After becoming familiar with some of the basic Directory Services
  261. APIs, converting a bindery application to use Directory Services
  262. is fairly easy. Although there is no "one-to-one" correspondence
  263. between bindery and directory functions, the subset of directory
  264. functions that replace the functionality of the bindery is
  265. relatively small. When you learn to use the functions required to
  266. control and access objects and attributes in the directory, you
  267. understand the majority of the functions needed to convert a
  268. bindery-based application to run in the Directory Services
  269. environment.
  270.  
  271. Since the bindery functions will still be supported for some time,
  272. you do not need to convert your entire application to Directory
  273. Services at once. It is possible (and in some cases desirable) for
  274. applications to use a combination of directory and bindery
  275. functions. During the gradual transition from bindery networks to
  276. directory networks, your applications may even need to operate in
  277. both environments.
  278.  
  279. The most important part of the process of converting to the
  280. directory is determining which directory functions provide the
  281. greatest benefit to your application and implementing those
  282. functions first. You must then decide which bindery functions your
  283. application should continue to use in order to maintain backward
  284. compatibility with previous versions of NetWare. The two sets of
  285. functionality can exist in harmony, but you should upgrade all of
  286. your bindery functions to the directory as time permits, leaving
  287. only those bindery functions that your application requires to
  288. support previous versions of NetWare. Figure 1 below contains
  289. several examples of common bindery functions and directory
  290. functions that perform similar operations.
  291.  
  292. *********************************************
  293. Figure 1: Common bindery functions and
  294. associated directory functions
  295.  
  296. Bindery Function              Directory Services Function
  297. =============================================================
  298. CreateBinderyObject()         NWDSAddObject()
  299. -------------------------------------------------------------
  300. DeleteBinderyObject()         NWDSRemoveObject()
  301. -------------------------------------------------------------
  302. ReadPropertyValue()           NWDSRead, NWDSSearch()
  303. -------------------------------------------------------------
  304. ScanBinderyObject()           NWDSRead, NWDSSearch()
  305. -------------------------------------------------------------
  306. ScanProperty()                NWDSRead, NWDSSearch()
  307. -------------------------------------------------------------
  308. WritePropertyValue()          NWDSModifyObject()
  309. -------------------------------------------------------------
  310.  
  311. END of FIGURE 1
  312. *********************************************
  313.  
  314. Several bindery functions are replaced by NWDSRead() and
  315. NWDSSearch(). This is made possible by the buffer management
  316. concept used by directory functions. The definition of the buffer
  317. controls how an operation will be performed in the directory. Then,
  318. after a buffer is correctly defined, making the directory function
  319. call to perform the operation is very straightforward. If an
  320. operation fails, it is most likely due to an incorrect buffer
  321. definition. This can usually be caught before the directory call
  322. is made by checking the return codes from the buffering functions,
  323. but this is not always the case.
  324.  
  325. The buffering functions themselves do not affect the directory
  326. database. The buffering functions check for proper syntax when
  327. creating the buffers, but they have no knowledge of what
  328. information exists in the directory. For example, if you define a
  329. buffer that includes attribute information, the buffering functions
  330. will check to ensure that the attribute names and values are
  331. specified in the proper format. However, if you misspell an
  332. attribute name, no error will occur until the directory call is
  333. actually made. If you get an error code from a directory function,
  334. correcting it will probably require changing one of the buffering
  335. function calls, not the directory call.
  336.  
  337.  
  338. Example Code
  339.  
  340. The example code in Figure 2 below illustrates one of the most
  341. common directory service operations: creating a new directory
  342. object of the User class.
  343.  
  344. *********************************************
  345. Figure 2: Creating a new "User" directory object
  346.  
  347. #define  LOGIN_NAME     "Admin"
  348. #define  PASSWORD       ""
  349. #define  OBJECT_NAME    "Example User Object"
  350. #define  SURNAME        "Example Surname"
  351.  
  352. #define  ESUCCESS       0
  353.  
  354. #include <stdio.h>
  355. #include <stdlib.h>
  356.  
  357. #include <nwnet.h>
  358.  
  359. NWDSContextHandle Context;
  360.  
  361. int ExampleCreateDSObject( char *objectName, char *surName )
  362.    {
  363.    int ccode;
  364.    int32 interationHandle;
  365.    Buf_T *attributes;
  366.  
  367.    ccode = NWDSAllocBuf(DEFAULT_MESSAGE_LEN, &attributes);
  368.    if(ccode < ESUCCESS)
  369.       return ccode;
  370.  
  371.    ccode = NWDSInitBuf(Context, DSV_ADD_ENTRY, attributes);
  372.    if(ccode < ESUCCESS)
  373.       goto freeBuffers;
  374.  
  375.    ccode = NWDSPutAttrName(Context, attributes, A_OBJECT_CLASS);
  376.    if(ccode < ESUCCESS)
  377.       goto freeBuffers;
  378.    ccode = NWDSPutAttrVal(Context, attributes,
  379.                           SYN_CLASS_NAME, A_USER);
  380.    if(ccode < ESUCCESS)
  381.       goto freeBuffers;
  382.  
  383.    ccode = NWDSPutAttrName(Context, attributes, A_SURNAME);
  384.    if(ccode < ESUCCESS)
  385.       goto freeBuffers;
  386.    ccode = NWDSPutAttrVal(Context, attributes,
  387.                           SYN_CI_STRING, surName);
  388.    if(ccode < ESUCCESS)
  389.       goto freeBuffers;
  390.  
  391.  
  392.    interationHandle = NO_MORE_ITERATIONS;
  393.    ccode = NWDSAddObject(Context, objectName, &interationHandle,
  394.                          FALSE, attributes);
  395.  
  396. freeBuffers:
  397.    NWDSFreeBuf(attributes);
  398.    return ccode;
  399.    }
  400.  
  401. void main( void )
  402.    {
  403.    int ccode;
  404.  
  405. #ifndef NLM
  406.    ccode = NWInitUnicodeTables(001, 437);
  407.    if(ccode < ESUCCESS)
  408.       {
  409.       printf("NWDSInitUnicodeTables returned %d\n", ccode);
  410.       exit(1);
  411.       }
  412. #endif
  413.  
  414.    Context = NWDSCreateContext();
  415.    if((long)Context < ESUCCESS)
  416.       {
  417.       printf("NWDSCreateContext returned %d\n", (int)Context);
  418.       exit(1);
  419.       }
  420.  
  421.    ccode = NWDSLogin(Context, 0, LOGIN_NAME, PASSWORD, 0);
  422.    if(ccode)
  423.       {
  424.       NWDSFreeContext(Context);
  425.       printf("NWDSLogin returned %d\n", ccode);
  426.       exit(1);
  427.       }
  428.  
  429.    ccode = ExampleCreateDSObject(OBJECT_NAME, SURNAME);
  430.    printf("AddNWDSObject returned %d\n", ccode);
  431.  
  432.    NWDSLogout(Context);
  433.    NWDSFreeContext(Context);
  434.    }
  435.  
  436. END of FIGURE 2
  437. *********************************************
  438.  
  439. The mainline performs several operations that are required in most
  440. directory applications:
  441.  
  442. *    Initializing the Unicode tables,
  443. *    Creating a context,
  444. *    Logging in, and
  445. *    Freeing all of these resources after the directory operations
  446.      are complete.
  447.  
  448. Notice that the "#ifndef" operator is used for conditional
  449. compilation of the NWDSInitUnicodeTables() function call. The
  450. example code creates a global context handle that is used
  451. throughout the rest of the program. A login is necessary (using
  452. NWDSLogin()) to obtain the required access rights for creating
  453. objects. Some functions (e.g., functions that read and search
  454. directory information) do not require the application to be logged
  455. in to the directory, since some objects allow access to read their
  456. attributes with no restrictions. For example, no login is required
  457. to read the Network Address attribute of a server when the name of
  458. the server object is known.
  459.  
  460. ExampleCreateDSObject() provides examples of buffer creation and
  461. initialization. Buffer manipulation functions put into the buffer
  462. the information required to define the object to be created. The
  463. buffer is initialized with the DSV_ADD_ENTRY constant, since a new
  464. object is being added. The only attribute information that must be
  465. placed in the buffer is for the mandatory attributes Object Class
  466. and Surname. The Common Name is also a mandatory attribute, but
  467. this name is supplied as one of the parameters (objectName) to
  468. NWDSAddObject().
  469.  
  470. The NWDSAddObject() call uses the information defined in the buffer
  471. to add the object to the directory database. Remember that if any
  472. part of the add operation fails (for example, if one of the
  473. attribute names is undefined), the entire operation will fail and
  474. the object will not be created.
  475.  
  476. As you make changes to the directory database, you will begin to
  477. notice a pattern of function calls that is repeated for most
  478. operations. The table in Figure 3 lists the basic steps required
  479. to accomplish most directory database operations and each
  480. operation's corresponding functions.
  481.  
  482. *********************************************
  483. Figure 3: Steps required for directory database operations & each
  484. operation's corresponding function calls
  485.  
  486. Operation                          Directory Function Call
  487. =============================================================
  488. Initialize the Unicode tables      NWDSInitUnicodeTables()
  489. (client applications only)
  490. -------------------------------------------------------------
  491. Create context                     NWDSCreateContext()
  492. -------------------------------------------------------------
  493. Login                              NWDSLogin()
  494. -------------------------------------------------------------
  495. Allocate buffers                   NWDSAllocBuf()
  496. -------------------------------------------------------------
  497. Initialize buffers                 NWDSInitBuf()
  498. -------------------------------------------------------------
  499. Define buffers                     NWDSPut...()
  500. -------------------------------------------------------------
  501. Perform the Directory Operation    NWDSAddObject()
  502.                                    NWDSModifyObject()
  503.                                    ...
  504. -------------------------------------------------------------
  505. Retrieve buffer information        NWDSGet...()
  506. -------------------------------------------------------------
  507. Free buffers                       NWDSFreeBuf()
  508. -------------------------------------------------------------
  509. Logout                             NWDSLogout()
  510. -------------------------------------------------------------
  511. Free context                       NWDSFreeContext()
  512. -------------------------------------------------------------
  513.  
  514. END of FIGURE 3
  515. *********************************************
  516.  
  517. These steps are not absolute; depending on the operation, more,
  518. fewer, or different steps may be required. This is just a general
  519. outline you can use as a starting point.
  520.  
  521. NetWare 4.0 Directory Services offers new features and advantages
  522. that make developing in a network environment easier and more
  523. flexible. Writing applications that take advantage of the directory
  524. requires careful planning, but the advantages are well worth the
  525. effort. Converting existing bindery-based applications to Directory
  526. Services gives applications greater flexibility, especially while
  527. hybrid bindery-and-directory networks exist that allow applications
  528. to be converted to the directory in stages. Once you are familiar
  529. with the directory, you will find that the capabilities provided
  530. by NetWare 4.0 Directory Services make NetWare applications
  531. development an even more rewarding and profitable endeavor.
  532.  
  533.  
  534. You can gain access to the Directory Services API through the NLM
  535. SDK for NetWare 4.0 and the NetWare Client SDK. You must be a
  536. member of a Novell Developers' Program to purchase these SDKs. For
  537. more information on these SDKs and the Novell Professional
  538. Developers' Program, call 1-800-NETWARE or 1-801-429-5588 (in the
  539. U.S. and Canada), or contact your local international Novell
  540. office.
  541.  
  542.  
  543.  
  544. *********************************************
  545. *********************************************
  546. TECHNICAL INSIGHTS:
  547. Creating Btrieve Quick Libraries for Visual Basic for DOS
  548. (Btrieve (all versions))
  549. *********************************************
  550. *********************************************
  551.  
  552. When developing Btrieve applications using the Microsoft Visual
  553. Basic for DOS interpreter environment (VBDOS), you must create a
  554. Quick Library that includes the required Btrieve interface. To
  555. create this Quick Library, use the following link command:
  556.  
  557. Link /q BC7RBTRV.OBJ, BC7.QLB,, VBDOSQLB.LIB;
  558.  
  559. where BC7RBTRV.OBJ is the Btrieve interface, BC7.QLB is the name
  560. of the Quick Library, and VBDOSQLB.LIB is the name of the required
  561. library. To load the Visual Basic for DOS environment to include
  562. the newly created Quick Library execute the following command:
  563.  
  564. VBDOS /L BC7
  565.  
  566.  
  567.  
  568. *********************************************
  569. *********************************************
  570. TECHNICAL INSIGHTS:
  571. Header File Inconsistencies
  572. (NetWare C Interface for DOS v1.2)
  573. *********************************************
  574. *********************************************
  575.  
  576. In DIAG.H, the fields, linkAddress and ESRAddress, in the ECB
  577. structure are defined as an array of WORD. In NXT.H, linkAddress
  578. and ESRAddress are defined as far pointers. These inconsistent ECB
  579. structure definitions can cause some problems if an ESR is defined
  580. in your application and the include file DIAG.H exists before
  581. NXT.H.
  582.  
  583. To resolve this inconsistency, either avoid including DIAG.H before
  584. NXT.H in applications that make IPX calls, or modify the
  585. linkAddress and ESRAddress fields in DIAG.H as follows:
  586.  
  587. void far  *linkAddress;
  588. void (far *) ();
  589.  
  590. The above definition should be included for applications that do
  591. not use ESR routines.
  592.  
  593.  
  594.  
  595. *********************************************
  596. *********************************************
  597. TECHNICAL INSIGHTS:
  598. Borland's Default open() Mode
  599. (NetWare C Interface for DOS v1.2)
  600. *********************************************
  601. *********************************************
  602.  
  603. After writing to a file through the Queue Services API, extra 0x0D
  604. (Carriage Return) characters may be left in the file. These extra
  605. characters remain because the Queue Services API assumes that the
  606. file will be open in Binary mode. For example, in the SERVJOB.C
  607. module, open() is called without specifying the mode in which the
  608. file should be open. If Borland's C++ v3.1 compiler is used to open
  609. the file, it defaults to text filtering which causes some extra
  610. characters to appear in the file.
  611.  
  612. To prevent the introduction of these extra 0x0D characters, change
  613. Borland's default open() mode by including the following lines in
  614. your code:
  615.  
  616. extern int _fmode;
  617.  
  618. _fmode = O_BINARY;
  619.  
  620.  
  621.  
  622. *********************************************
  623. *********************************************
  624. TECHNICAL INSIGHTS:
  625. New Status Codes for NetWare SQL v3.0
  626. (NetWare SQL v3.0)
  627. *********************************************
  628. *********************************************
  629.  
  630. Several status codes have been added to NetWare SQL since the
  631. release of version 3.0. These status codes are not documented in
  632. NetWare SQL Status Codes and Messages (Jan. 1992 ed.).
  633.  
  634. 350  Security is not enabled on dictionary
  635.  
  636.      You have attempted to perform an operation that can only be
  637.      done when security is enabled. Database security is not
  638.      enabled at this time.
  639.  
  640. 351  Transaction is not started yet
  641.  
  642.      You must start a transaction before performing a COMMIT or
  643.      ROLLBACK operation.
  644.  
  645. 886  Incorrect Btrieve file version for this operation
  646.  
  647.      Referential integrity constraints can only be defined on
  648.      Btrieve file versions 6.0 or later. If you wish to add
  649.      referential integrity to this file, use BREBUILD to convert
  650.      it to the v6.0 file format.
  651.  
  652. 887  CREATE TABLE statement cannot reference the same table more
  653.      than once
  654.  
  655.      This status code is returned in place of 568; status code 568
  656.      is not actually used. For more details, check the NetWare SQL
  657.      Status Codes and Messages manual under "status code 568."
  658.  
  659. 888  A primary key is already defined on this table
  660.  
  661.      A table may contain only one primary key and you have
  662.      attempted to define a second primary key on this table.
  663.  
  664.  
  665.  
  666. *********************************************
  667. *********************************************
  668. TECHNICAL INSIGHTS:
  669. Must Scan Salvagable Files Before Purging
  670. (NetWare C Interface for DOS v1.2)
  671. *********************************************
  672. *********************************************
  673.  
  674. The NetWare C Interface for DOS v1.2 documentation incorrectly
  675. states that an initial search can be performed by setting entryID
  676. to "-1." Setting the entryID parameter in PurgeSalvagableFile() to
  677. "-1" as suggested in the documentation always causes it to fail.
  678. PurgeSalvagableFile() cannot scan for files to be purged.
  679.  
  680. You must call ScanSalvagableFiles() to get a valid entryID value
  681. before calling PurgeSalvagableFile(). This entryID will allow
  682. PurgeSalvagableFile() to identify the directory entry to be purged.
  683.  
  684.  
  685.  
  686. *********************************************
  687. *********************************************
  688. TECHNICAL INSIGHTS:
  689. readdir API Returns Invalid Date/Time
  690. (Network C for NLMs v2.0(d))
  691. *********************************************
  692. *********************************************
  693.  
  694. The readdir API is returning date/time fields in a format that is
  695. similar to the DOS date/time format, but not identical. Differences
  696. between the formats cause SetFileInfo() to set the time and date
  697. information incorrectly if the fields are passed directly from
  698. readdir().
  699.  
  700. The documentation states that dates should be stored in DOS format
  701. for SetFileInfo(). However, to accomplish this, the dates/times
  702. returned from readdir() must be modified. The four-byte date/time
  703. value must have the two WORDs, "AA BB" and "CC DD," swapped, but
  704. the WORDs themselves should not be swapped. For example,
  705.  
  706. AA BB CC DD
  707.  
  708. needs to be stored as
  709.  
  710. CC DD AA BB
  711.  
  712. Simply using LongSwap does not resolve this situation, since
  713. LongSwap also swaps the values within the WORDS as well. To ensure
  714. that date/ time values are set properly, swap only the location of
  715. the two WORD values. Figure 4 contains an example that assumes the
  716. receiving fields have been defined as character arrays.
  717.  
  718. *********************************************
  719. Figure 4: Example of Date/Time format change
  720.  
  721. *(WORD *)lastUpdateDateAndTime      = dirP->d_date;
  722. *(WORD *)&lastUpdateDateAndTime[2]  = dirP->d_time;
  723.  
  724. *(WORD *)creationDateAndTime        = ((WORD *)(&dirP->d_cdatetime))[1];
  725. *(WORD *)&creationDateAndTime[2]    = ((WORD *)(&dirP->d_cdatetime))[0];
  726.  
  727. *(WORD *)lastAccessDate             = ((WORD *)(&dirP->d_adatetime))[1];
  728.  
  729. *(WORD *)lastArchiveDateAndTime     = ((WORD *)(&dirP->d_bdatetime))[1];
  730. *(WORD *)&lastArchiveDateAndTime[2] = ((WORD *)(&dirP->d_bdatetime))[0];
  731.  
  732. END of FIGURE 4
  733. *********************************************
  734.  
  735.  
  736.  
  737. *********************************************
  738. *********************************************
  739. TECHNICAL INSIGHTS:
  740. Printing Through Xtrieve PLUS - Tabloid Setting Correction
  741. (Xtrieve PLUS v4.11)
  742. *********************************************
  743. *********************************************
  744.  
  745. In the XTRIEVE.PDB file that ships with NetWare SQL v3.0, the
  746. TABLOID setting is set to EPSON LQ-1500/2.0, rather than IBM PC
  747. Graphics printer. To change the TABLOID setting to IBM PC Graphics
  748. printer, the printer information needs to be altered as follows:
  749.  
  750. *    At the DOS prompt type
  751.  
  752.      "SLATE XTRIEVE.PDB"
  753.  
  754. *    Select    "Add/Edit Devices (Ptr Connections)"
  755.      -    Select "3001 Tabloid" <Press ENTER>
  756.      -    Tab to "Ptr Mfg"
  757.      -    Press F9 [Lists]
  758.      -    Select "IBM" <Press ENTER>
  759.      -    Tab to "Ptr Type"
  760.      -    Press F9 [Lists]
  761.      -    Select "PC Graphics Printer" <Press ENTER>
  762.  
  763. *    Press     F10 [Prev Screen]
  764.      Press     F10 [Prev Screen]
  765.      Press     F10 [Exit]
  766.  
  767.  
  768.  
  769. *********************************************
  770. *********************************************
  771. TECHNICAL INSIGHTS:
  772. MapDrive() and Windows
  773. (NetWare C Interface for Windows v1.3)
  774. *********************************************
  775. *********************************************
  776.  
  777. The Windows MapDrive() function can only modify an existing search
  778. drive, it cannot add a new one. In order to add a search drive
  779. under Windows, a dummy search drive is required before bringing up
  780. Windows. Then, this search mapping can be modified using
  781. MapDrive().
  782.  
  783.  
  784.  
  785. *********************************************
  786. *********************************************
  787. TECHNICAL INSIGHTS:
  788. Get Next Extended Operation after Get Key
  789. (NetWare Btrieve v5.15, Btrieve for DOS v5.10a)
  790. *********************************************
  791. *********************************************
  792.  
  793. If you use the GetKey bias (+50) when establishing positioning
  794. before a Get Next Extended (38) operation, the extended operation
  795. will not function properly, returning either a status 19
  796. (Unrecoverable Error) or erroneous information in the databuffer.
  797. This situation occurs with Btrieve for DOS v5.10a and NetWare
  798. Btrieve v5.15.
  799.  
  800. Patch #57, available on Novell's NetWire forum on CompuServe
  801. (NOVLIB, LIB 7), resolves the situation for NetWare Btrieve v5.15.
  802. There is currently no patch for Btrieve for DOS v5.10a, so avoid
  803. using the GetKey bias before Get Next Extended operations. Instead,
  804. use a Get First (12), Get Equal (5), or some other operation to
  805. establish positioning without the +50 bias.
  806.  
  807.  
  808.  
  809. *********************************************
  810. *********************************************
  811. TECHNICAL INSIGHTS:
  812. NetWare Btrieve & New Intel NE3200 Driver
  813. (NetWare Btrieve (NLM) v5.15)
  814. *********************************************
  815. *********************************************
  816.  
  817. File corruption can occur when you use Intel's NE3200.COM driver
  818. (09-03-91, 19242 bytes) in conjunction with Intel's EtherExpress
  819. 32bit card on workstations running Btrieve applications. Intel
  820. describes the situation as:
  821.  
  822.      "... a problem with the Ether-Express 32 and applications that
  823.      use extended memory or memory managers (i.e. MicroSoft Windows
  824.      3.x). Previous versions of this driver would not protect
  825.      memory regions from the above mentioned applications. This
  826.      could cause files that the EtherExpress 32 stored in memory
  827.      to be overwritten (corrupted) if an application wrote to that
  828.      address space."
  829.  
  830. Intel has a new NE3200.COM driver (date: 05-04-92, size: 25967)
  831. which fixes these problems through the use of the keyword "DOUBLE
  832. BUFFER" in the NET.CFG file. This driver is still in Beta and has
  833. not completed certification. This driver defaults to an 802.2 frame
  834. type; if you need a different frame type, include a "FRAME"
  835. statement in the NET.CFG file. Figure 5 contains a sample NET.CFG
  836. file. Note that this file requires the NE3200.COM driver to be in
  837. the same directory as itself.
  838.  
  839. *********************************************
  840. Figure 5: Sample NET.CFG file for NE3200.COM driver
  841.  
  842. LINK DRIVER NE3200
  843. SLOT 5
  844. DOUBLE BUFFER
  845. FRAME ETHERNET_802.3
  846. PROTOCOL IPX 0 ETHERNET_802.3
  847. PROTOCOL IPX
  848. BIND NE3200
  849.  
  850. END of FIGURE 5
  851. *********************************************
  852.  
  853.  
  854.  
  855.  
  856. *********************************************
  857. *********************************************
  858. TECHNICAL INSIGHTS:
  859. Substitution Variables & NetWare SQL Inserts
  860. (NetWare SQL v3.0a)
  861. *********************************************
  862. *********************************************
  863.  
  864. When inserting records through a substitution variable, if the data
  865. being inserted contains the "@" character, all subsequent inserts
  866. with the same cursor are given the same data for that field.
  867. NetWare SQL is confusing the "@" in the data with a substitution
  868. variable indicator.
  869.  
  870. *********************************************
  871. Figure 6: NetWare SQL inserts resulting in incorrect field data
  872.  
  873. XQLCompile of "INSERT INTO Patients (ID, First^Name, Last^Name, Address)
  874.                VALUES (@V1, @V2, @V3, @V4)"
  875. XQLSubst where
  876.   V1 = "A11111"  V2 = "John"  V3 = "Smith"  V4 = "100 Main @ 1st"
  877. XQLExec (performs Insert successfully)
  878. XQLSubst where
  879.   V1 = "B22222"  V2 = "Mary"  V3 = "Brown"  V4 = "222 Central Ave."
  880. XQLExec (performs Insert successfully)
  881.  
  882. END of FIGURE 6
  883. *********************************************
  884.  
  885. For example, in Figure 6, the second insert (and all subsequent
  886. inserts based on the same XQLCompile command) will result in each
  887. record being inserted with the same address as the first record:
  888. "100 Main @ 1st".
  889.  
  890. This occurs with any application making the above calls, and when
  891. using the Load option of the NetWare SQL Maintenance Utility
  892. (NSUTIL.EXE and NSUTIL.NLM), since it uses these calls. With
  893. NSUTIL, the problem will occur in each file format: SDF, UNF, DIF
  894. or ASC.
  895.  
  896. To resolve the situation and ensure that each record is inserted
  897. with the correct address, upgrade to the latest release of NetWare
  898. SQL, version 3.0b (avail. Dec. 92). To obtain v3.0b, download
  899. SQL30.ZIP form the NOVLIB forum on CompuServe, or contact Novell
  900. Developer Support (see "Contacting Novell," page 11). Otherwise,
  901. the only work-around is to recompile the statement between
  902. XQLSubst/XQLExec calls, or append the actual data values into the
  903. Insert statement passed in on the XQLCompile command, instead of
  904. using the substitution variables.
  905.  
  906.  
  907.  
  908. *********************************************
  909. *********************************************
  910. TECHNICAL INSIGHTS:
  911. Unique Passwords
  912. (NetWare v3.11)
  913. *********************************************
  914. *********************************************
  915.  
  916. If the "Unique Passwords" requirement is enabled through SYSCON,
  917. and a password is changed to one of the old passwords through
  918. SYSCON, the password is accepted and no error messages are
  919. returned.
  920.  
  921. Whenever you change a password through SYSCON, the password
  922. expiration date defaults to January 1, 1985. Unless you change this
  923. expiration date to a date later than the current date, SYSCON will
  924. accept any passwords that were used previously even though the
  925. "Unique Passwords" restriction is on. Therefore, make sure that the
  926. password expiration date is valid.
  927.  
  928.  
  929.  
  930. *********************************************
  931. *********************************************
  932. TECHNICAL INSIGHTS:
  933. Determining If Data Dictionary Files are Corrupted
  934. (Xtrieve PLUS v4.1x)
  935. *********************************************
  936. *********************************************
  937.  
  938. When you attempt to add fields to a view and when recalling views,
  939. if the .DDF files are damaged, Xtrieve PLUS v4.1x returns status
  940. 207 (Field Does Not Exist in Dictionary) or status 240 (Field in
  941. the View Definition Is Not in the Active Dictionary).
  942.  
  943. In the Xtrieve PLUS User's Manual (for DOS and OS2), Appendix D
  944. lists Dictionary Structures for all of the .DDF files. With Xtrieve
  945. PLUS for NetWare SQL, the Dictionary Structures are shown in
  946. Appendix C. Each description lists the field and index names for
  947. each .DDF file. Specifics are given for field data types and sizes,
  948. and key flags, such as duplicates, case sensitivity, and segments.
  949.  
  950. To view the .DDF file definitions in Xtrieve PLUS, the CONFIGURE/
  951. SWITCHES/DICTIONARY option must be set to "YES." Then, the .DDF
  952. file definitions can be viewed through the DICTIONARY/SHOW option.
  953. To resolve this situation, use VIEW/FILE  to compare the field and
  954. index information described by the user's manual for the .DDF files
  955. with the set of .DDF files you are using. A comparison should be
  956. made of the field and index information. If any of the information
  957. does not match exactly, then the .DDF files are probably corrupted.
  958.  
  959. One more thing to note is that if a Btrieve BUTIL -STAT is executed
  960. on the DDF files, the results may not match the dictionary file
  961. definitions viewed in Xtrieve if the files are corrupted.
  962.  
  963. .DDF files created with NetWare SQL will have a supplemental index
  964. defined for X$Field (FIELD.DDF), but this is only shown in the
  965. NetWare SQL Developer's Kit Getting Started manual which shipped
  966. with NetWare SQL 3.0. This fourth supplemental index is not shown
  967. in the Xtrieve PLUS User's Manuals, and is only defined if the
  968. dictionaries were created with NetWare SQL.
  969.  
  970. To recover corrupted data dictionary files, use MAKE_XTA to extract
  971. each file definition. Then, use XCFP to create a command file to
  972. rebuild each file. This process can be partially automated by
  973. performing the following steps:
  974.  
  975.      1.   Using XQLI or any other SQL statement processor, execute
  976.           the following statement to extract the file names from
  977.           the dictionary files and save the output to an ASCII
  978.           file:
  979.  
  980.           SELECT Xe$Name FROM X$File
  981.           (to extract file definition names)
  982.  
  983.           Then, edit the ASCII file so that it does not contain any
  984.           of the dictionary file names (X$File, X$Field, etc.)
  985.  
  986.      2.   Edit the ASCII file so that each file definition is
  987.           recoverable using MAKE_XTA and XCFP as follows: The
  988.           result from the SELECT statement above was:
  989.  
  990.           FILEDEF1
  991.           FILEDEF2
  992.           FILEDEF3
  993.  
  994.           Next, edit the ASCII file to look like this (you may have
  995.           to cut and paste quite a bit, but it's worth it if you
  996.           have many files):
  997.  
  998.           MAKE_XTA /F:"FILEDEF1"
  999.           XCFP MAKE_XTA.XTA FILECMD1
  1000.           MAKE_XTA /F:"FILEDEF2"
  1001.           XCFP MAKE_XTA.XTA FILECMD2
  1002.           MAKE_XTA /F:"FILEDEF3"
  1003.           XCFP MAKE_XTA.XTA FILECMD3
  1004.  
  1005.           Then, rename the resulting ASCII file with a .BAT
  1006.           extension.
  1007.  
  1008.      3.   Create a new set of .DDF files in another directory using
  1009.           the Xtrieve PLUS DICTIONARY/CREATE option.
  1010.  
  1011.      4.   Run the batch file in the directory with the corrupted
  1012.           .DDF files. It will create command files, with a .XTC
  1013.           extension, which can be played back against the new .DDF
  1014.           files created in Step 3.
  1015.  
  1016.      5.   To recover view definitions, repeat Step 1 with the
  1017.           following statement:
  1018.  
  1019.           SELECT Xv$Name FROM X$View
  1020.  
  1021.           Then, repeat Step 2 using the result from the SELECT
  1022.           statement, editing the ASCII file as follows:
  1023.  
  1024.           MAKE_XTA /V:"viewname"
  1025.           XCFP MAKE_XTA.XTA VIEWCMD1
  1026.           .
  1027.           .
  1028.           .
  1029.  
  1030.           Finally, repeat Step 4.
  1031.  
  1032.  
  1033.  
  1034. *********************************************
  1035. *********************************************
  1036. TECHNICAL INSIGHTS:
  1037. Prototype Missing from CLib
  1038. (Network C for NLMs SDK v2.0(e))
  1039. *********************************************
  1040. *********************************************
  1041.  
  1042. In the Network C for NLMs SDK, the ioctl() prototype is missing
  1043. from the header files of CLIB.NLM v.3.11 b. This generates a
  1044. warning message from the compiler. For now, you can safely ignore
  1045. this warning message. The prototype will be included in a later
  1046. release.
  1047.  
  1048.  
  1049.  
  1050. *********************************************
  1051. *********************************************
  1052. TECHNICAL INSIGHTS:
  1053. Create/Drop Index Operations within a Transaction
  1054. (NetWare SQL v3.0)
  1055. *********************************************
  1056. *********************************************
  1057.  
  1058. With NetWare SQL, if an application performs a Create Index or Drop
  1059. Index operation on a table within a transaction after it has
  1060. previously updated the same table within the same transaction, the
  1061. updates will be committed when the Create Index or Drop Index
  1062. operation completes. The updates cannot be rolled-back, even though
  1063. the application has not yet issued the COMMIT/ROLLBACK statement.
  1064.  
  1065. This anomaly occurs because NetWare SQL must temporarily disable
  1066. transactions to Btrieve in order to perform the Btrieve Create
  1067. Index or Drop Index operation. When this operation is complete, all
  1068. outstanding updates to the file are committed.
  1069.  
  1070. In general, applications should not mix DDL (Data Definition
  1071. Language) operations like Create Index or Drop Index and data
  1072. updates within a single transaction.
  1073.  
  1074.  
  1075.  
  1076. *********************************************
  1077. *********************************************
  1078. NIBBLES & BITS
  1079. Fast answers to common questions
  1080. *********************************************
  1081. *********************************************
  1082.  
  1083. *********************************************
  1084. NetWare C Interface for DOS
  1085. *********************************************
  1086.  
  1087. Q:   When I am running IPXODI v2.0, GetServerAddressTable() and
  1088.      GetServerNameTable() return empty information buffers. The
  1089.      exact same calls function properly under IPXODI v1.2. What
  1090.      should I do?
  1091.  
  1092. A:   This situation is the result of a known problem with IPXODI
  1093.      v2.0 that will be fixed in the next release. Until then, if
  1094.      you need to use these calls, use IPXODI v1.2.
  1095.  
  1096.  
  1097. Q:   The documentation for the NetWare C Interface for DOS for
  1098.      BroadcastToConsole(), CloseMessagePipe(), and
  1099.      GetBroadcastMessage() shows an error code "253 (0xFC)
  1100.      MESSAGE_QUEUE_FULL". However, decimal "253" does not equal hex
  1101.      "FC."
  1102.  
  1103. A:   The hex value is correct. The decimal value should be "252."
  1104.  
  1105.  
  1106. TIP: The ScanDirEntry() And ScanFileEntry() calls do not return the
  1107.      originating/owning namespace of a file or directory entry. To
  1108.      return this information, substitute the NetWare v3.x system
  1109.      call ObtainFileOrSubdirectoryInformation() using the F2
  1110.      interface. For example code demonstrating this call, contact
  1111.      the Developer Support Group.
  1112.  
  1113.  
  1114. *********************************************
  1115. NetWare C Interface for Windows
  1116. *********************************************
  1117.  
  1118. Q:   Is it possible to login and logout of a NetWare server from
  1119.      a Windows 3.1 DOS box?
  1120.  
  1121. A:   In order to log in and out of a NetWare server multiple times
  1122.      from a DOS window, several conditions must be satisfied:
  1123.  
  1124.      1.   The shell (IPX/ODI and NETX) must be loaded prior to
  1125.           starting Windows.
  1126.  
  1127.      2.   VIPX.386 should be version 1.13 or later.
  1128.  
  1129.      3.   Set NWShareHandles = TRUE to share drive mappings among
  1130.           DOS sessions. This parameter is in the [NetWare] section
  1131.           of the Windows SYSTEM.INI file.
  1132.  
  1133.      4.   A path must be maintained to the \LOGIN subdirectory of
  1134.           a NetWare server.
  1135.  
  1136.  
  1137. Q:   When programming under Windows v3.1 using the NetWare C
  1138.      Interface for Windows SDK v1.3, the error message,
  1139.      "SPX_NOT_INSTALLED," may be returned when calling the function
  1140.      SPXInitialize(). Similarly, the error message, "IPX_NOT_
  1141.      INSTALLED," may be returned when calling IPXInitialize().
  1142.  
  1143. A:   To prevent these error conditions, make certain that you are
  1144.      using the appropriate versions of the following files:
  1145.  
  1146.      *    IPX.COM v3.10 and above or IPXODI.COM v 1.20 & above
  1147.  
  1148.      *    VIPX.386 v 1.13 and above
  1149.  
  1150.      *    NWIPXSPX.DLL v1.31 and up
  1151.  
  1152.  
  1153. *********************************************
  1154. NetWare Client SDK
  1155. *********************************************
  1156.  
  1157. Q:   Working with the NetWare v4.0 Client SDK, the NWCalls DOS
  1158.      Client Calls don't seem to function. Am I forgetting
  1159.      something?
  1160.  
  1161. A:   The NWCalls APIs require a call to NWCallsInit() before they
  1162.      will function properly. NWCallsInit() initializes the double
  1163.      byte tables, as well as other lower-level interface functions.
  1164.  
  1165.  
  1166. *********************************************
  1167. NLM SDK for NetWare v4.0
  1168. *********************************************
  1169.  
  1170. Q:   How can I make my NLM's screen look like a standard Novell NLM
  1171.      screen?
  1172.  
  1173. A:   Use the NWSNut libraries that are included with the NLM SDK
  1174.      for NetWare v4.0.
  1175.  
  1176.  
  1177. *********************************************
  1178. WATCOM C/386
  1179. *********************************************
  1180.  
  1181. Q:   I am using WATCOM C/386 v9.0 and the WLINK linker will not
  1182.      export symbols from my NLM. What should I do?
  1183.  
  1184. A:   Patch the v9.0 linker up to 9.01d, to fix this problem.
  1185.      Patches for WATCOM C/386 are available from WATCOM's BBS at
  1186.      519-884-2103.
  1187.  
  1188.  
  1189. *********************************************
  1190. Network C for NLMs
  1191. *********************************************
  1192.  
  1193. TIP: In the Network C for NLMs v2.0(d) documentation, the example
  1194.      for AIOAcquirePort() passes the hardwareType, boardNumber, and
  1195.      portNumber as integers. However, doing so can result in a
  1196.      server abend. To fix the example, pass the hardwareType,
  1197.      boardNumber and portNumber in as pointers to integers.
  1198.  
  1199.  
  1200. *********************************************
  1201. NetWare Btrieve
  1202. *********************************************
  1203.  
  1204. TIP: The new NetWare Btrieve v6.0 operation 42, to control
  1205.      Continuous Operations on a Btrieve file, can only be called
  1206.      from an NLM application, and not from a workstation
  1207.      application.
  1208.  
  1209.  
  1210. Q:   How can I create Data Definition Files (.DDF) files to work
  1211.      with third-party products that requires them?
  1212.  
  1213. A:   You can obtain these .DDf file in two ways:
  1214.  
  1215.      *    The software company who sold the product should be able
  1216.           to provide the .DDF with their software.
  1217.  
  1218.      *    Use Xtrieve PLUS, XQL or NetWare SQL to create the .DDF
  1219.           files.
  1220.  
  1221.  
  1222.  
  1223. *********************************************
  1224. *********************************************
  1225. NOVELL DEVELOPER RELATIONS
  1226. A special supplement to Novell's
  1227. Professional Development Series BULLETS
  1228. *********************************************
  1229. *********************************************
  1230.  
  1231. *********************************************
  1232. Bundle Up for 1993
  1233. *********************************************
  1234.  
  1235. You've probably already purchased some warm-weather gear, but have
  1236. you purchased the development tools you'll need to make it through
  1237. the winter?
  1238.  
  1239. Since your development efforts sometimes require more than one
  1240. Novell development tool as well as other Novell products, Novell
  1241. has designed development tool bundles. These bundles provide you
  1242. with everything you need to develop specific types of applications
  1243. for the NetWare platform, including tools and comprehensive
  1244. documentation that explains how the components of the bundle work
  1245. together, installation, service and support, and licensing issues.
  1246.  
  1247. Tool bundles are especially useful for new developers or developers
  1248. new to a particular type of application development. After
  1249. purchasing a single tool bundle, you can begin developing your
  1250. application immediately.
  1251.  
  1252. Tool bundles are currently available for network management,
  1253. NetWare 4.0 client/server application development, and distributed
  1254. desktop application development using Novell's TCP/IP protocol. The
  1255. specific bundles offered are:
  1256.  
  1257. *    LAN WorkShop
  1258. *    NetWare 4.0 tool bundle
  1259. *    NetWare Management System tool bundle
  1260.  
  1261.  
  1262. LAN WorkShop
  1263.  
  1264.      With the LAN WorkShop, Novell consolidates its TCP/IP
  1265.      development tools into one package. This bundle includes:
  1266.  
  1267.      *    LAN WorkPlace for DOS Toolkit
  1268.      *    LAN WorkPlace for OS/2 Toolkit
  1269.      *    LAN WorkPlace for Macintosh Toolkit
  1270.      *    Enhanced version of NetWare Transport Independent Remote
  1271.           Procedure Calls (TIRPC) SDK
  1272.  
  1273.      All toolkits included with the LAN WorkShop provide both
  1274.      development tools and end-user software.
  1275.  
  1276.      The LAN WorkPlace for DOS Toolkit allows you to use TCP/IP to
  1277.      build custom applications compatible with Novell's LAN
  1278.      WorkPlace for DOS v4.1. The toolkit software allows you to
  1279.      write DOS, DR-DOS, and Windows applications that use the
  1280.      Novell TCP/IP protocol stack for DOS and Windows via an
  1281.      industry-standard 4.3 BSD socket library API. Applications
  1282.      using TCP/IP gain access to a wide variety of enterprise
  1283.      computing resources, such as PCs, Macintoshes, VAX
  1284.      minicomputers, IBM mainframes, and UNIX workstations.
  1285.  
  1286.      The LAN WorkPlace for OS/2 Toolkit v3.0 provides the necessary
  1287.      tools for developing OS/2 v2.0 16-bit and 32-bit
  1288.      industry-standard 4.3 BSD socket applications that run with
  1289.      the LAN WorkPlace for OS/2 v3.0. The toolkit includes the LAN
  1290.      WorkPlace for OS/2 end-user program, a TCP/IP stack for
  1291.      building applications that access TCP/IP resources, and
  1292.      requesters for OS/2 v1.3 and v2.0. Applications you develop
  1293.      using this tookit operate with other Novell products that use
  1294.      the LAN WorkPlace for OS/2 APIs.
  1295.  
  1296.      The LAN WorkPlace for Macintosh Toolkit v1.3 allows you to
  1297.      build applications that use the APIs provided in the Novell
  1298.      TCP/IP for Macintosh (part of the LAN WorkPlace for Macintosh
  1299.      product) or the Apple Macintosh TCP. The Toolkit also provides
  1300.      the necessary development support for building HyperCard
  1301.      stacks that use TCP/IP.
  1302.  
  1303.      The last component of the LAN WorkShop is the new TIRPC SDK,
  1304.      version 1.1, which is based on the Solaris Open Network
  1305.      Computing Plus TIRPC model from SunSoft, Inc. The TIRPC
  1306.      libraries allow programs to make function calls that can be
  1307.      transported across a network using either TCP/IP or IPX,
  1308.      freeing developers from having to know the semantics of the
  1309.      underlying network.
  1310.  
  1311.  
  1312. NetWare 4.0 Tool Bundle
  1313.  
  1314.      The NetWare 4.0 tool bundle provides all the necessary tools
  1315.      for developing client and server applications for the NetWare
  1316.      4.0 platform. Products in this tool bundle include:
  1317.  
  1318.      *    Pre-release version of the NetWare 4.0 operating system
  1319.      *    NLM SDK for NetWare 4.0
  1320.      *    NetWare Client SDK
  1321.      *    WATCOM C/386 compiler and tools
  1322.      *    LANalyzer for Windows
  1323.  
  1324.      With this bundle, you can take advantage of all the new
  1325.      features of NetWare 4.0 in your application development. These
  1326.      features include (but are not limited to) NetWare Directory
  1327.      Services (NDS), auditing, memory protection and management,
  1328.      file compression, data migration, core OS process management,
  1329.      media manager, international language enabling, NCP (NetWare
  1330.      Core Protocol) extensions, and backward compatibility with
  1331.      NetWare 3.x.
  1332.  
  1333.      The NLM SDK for NetWare 4.0 features the NLM library of APIs
  1334.      for NetWare 4.0; the NLM transport interfaces for
  1335.      multiprotocol support in NetWare 4.0; NWSHELL NLM, which
  1336.      provides DOS-like commands that can be executed on the server;
  1337.      a complete set of documentation; and support for WATCOM
  1338.      compiler v9.0 and higher.
  1339.  
  1340.      The NetWare Client SDK contains software and documentation for
  1341.      developing DOS, Windows, and OS/2 client applications for
  1342.      NetWare 2.x, 3.x, and 4.0. The C libaries provided with this
  1343.      kit have been developed as single set of source code wherever
  1344.      possible, allowing easy application migration between the
  1345.      three supported desktop platforms.
  1346.  
  1347.      The WATCOM C 32-bit Optimizing Compiler and Tools is also
  1348.      provided with the NetWare 4.0 tool bundle. Tools include a
  1349.      linker, debugger, execution profiler, utilities,
  1350.      documentation, and two libraries: the C graphics library and
  1351.      the C library. The WATCOM compiler can be used to write DOS,
  1352.      Windows, OS/2, and NetWare applications.
  1353.  
  1354.      The last component in the NetWare 4.0 Tool Bundle, LANalyzer
  1355.      for Windows, is a powerful Windows-based application for
  1356.      monitoring your network on a day-to-day basis, monitoring
  1357.      long-term network trends, analyzing specific problems, and
  1358.      capturing network packets for protocol analysis. It uses a
  1359.      "dashboard" graphical interface consisting of real-time dials
  1360.      depicting network activity. In addition, LANalyzer for Windows
  1361.      lets you print station monitor data, decoded packets, detail
  1362.      graphs, and trend graphs. LANalyzer for Windows installs on
  1363.      any network PC, runs on Ethernet cards, and supports ODI
  1364.      drivers operating in promiscuous mode.
  1365.  
  1366.  
  1367. NetWare Management Tool Bundle
  1368.  
  1369.      The NetWare Management tool bundle provides all the software
  1370.      and documentation necessary for creating network management
  1371.      applications for NetWare. This tool bundle is based on
  1372.      Novell's open network management architecture which allows
  1373.      applications to snap into NetWare's Network Management Map
  1374.      (NMM) platform. The NetWare Management tool bundle includes:
  1375.  
  1376.      *    NetWare Management System (NMS)
  1377.      *    Network C for NLMs
  1378.      *    LANalyzer for Windows
  1379.  
  1380.      The NetWare Management System SDK includes the NetWare
  1381.      Management Map, and a set of tools and interfaces with which
  1382.      you can create custom management modules that plug into the
  1383.      NetWare Management Map.
  1384.  
  1385.      The tools and interfaces consists of a set of Windows 3.x
  1386.      Dynamic Data Exchange (DDE) interfaces to an SNMP server and
  1387.      alarm manager, a Btrieve-based database schema, a set of
  1388.      graphical user interface (GUI) tools that let you represent
  1389.      network management indicators as graphic elements, and an
  1390.      application integrator that allows you to create new NMS menu
  1391.      items and network management objects.
  1392.  
  1393.      The second tool in this bundle is the Network C for NLMs SDK,
  1394.      which fully supports development in both the NetWare v3.1 and
  1395.      v3.11 environments. This SDK includes the NLM library of APIs,
  1396.      NLM transport interfaces, the WATCOM C/386 Optimizing Compiler
  1397.      and Tools, and the NLM Certification Kit.
  1398.  
  1399.      The final component in this bundle is LANalyzer for Windows,
  1400.      a diagnostic tool that provides a "dashboard" graphical
  1401.      interface that lets you monitor the network on a day-to-day
  1402.      basis, review long-term network trends, analyze specific
  1403.      problems, capture protocol analysis, as well as print station
  1404.      monitor data and graphs of network statistics.
  1405.  
  1406. You must be a member of a Novell Developers' Program to purchase
  1407. these tool bundles.
  1408.  
  1409.  
  1410.  
  1411. *********************************************
  1412. New NetWare Client SDK Features Single Interface
  1413. *********************************************
  1414.  
  1415. The NetWare Client SDK, which started shipping in January 1993,
  1416. features a single interface for writing DOS, DR-DOS, Windows, and
  1417. OS/2 client applications in the NetWare 2.x, 3.x, and 4.0
  1418. environments. The C libraries provided in this kit have been
  1419. developed as a single set of source code whenever possible,
  1420. allowing easy application migration between the supported desktop
  1421. platforms.
  1422.  
  1423. This SDK includes a pre-release version of the NetWare 4.0
  1424. operating system, the client API libraries, and an API
  1425. documentation set. It will replace four existing Novell products:
  1426. NetWare C Interface for DOS, NetWare OS/2 Developer's Kit, NetWare
  1427. C Interface for Windows, and NetWare System Calls for DOS.
  1428.  
  1429. All developer support for this SDK is provided only electronically
  1430. through the NOVDEV forum on CompuServe. Questions can be posted to
  1431. NOVDEV twenty-four hours a day, maximizing both domestic and
  1432. international developers' time. Questions and answers will be
  1433. incorporated into a Q&A database on NOVDEV that developers can
  1434. browse at any time.
  1435.  
  1436. If you purchased NetWare C Interface for DOS, NetWare OS/2
  1437. Developer's Kit, NetWare C Interface for Windows, or NetWare System
  1438. Calls for DOS before September 12, 1992, you can purchase the
  1439. NetWare Client SDK for a special price for a limited time. If you
  1440. purchased one of these SDKs after September 12, 1992 and can show
  1441. proof of purchase, you can receive the NetWare Client SDK free of
  1442. charge for a limited time.
  1443.  
  1444. You must be a member of a Novell Developers' Program to receive
  1445. this SDK.
  1446.  
  1447.  
  1448.  
  1449. *********************************************
  1450. Changes to Network Management Tools
  1451. *********************************************
  1452.  
  1453. With NetWare v3.11, Novell shipped version 1.0 of the SNMP (Simple
  1454. Network Management Protocol) Agent. This release marked the
  1455. beginning of the movement toward managing NLMs through SNMP. A new
  1456. version of the SNMP Agent (v2.0) and set of developer tools is now
  1457. available as a component of the NetWare Management System (NMS)
  1458. SDK.
  1459.  
  1460. The NMS SDK allows developers to register NLMs with the SNMP agent
  1461. for SNMP manageability. These new SNMP Agent developer tools
  1462. replace the NetWare Network Management Toolkit. The SNMP Agent
  1463. tools define how developers can register an NLM and the SNMP MIB
  1464. (Management Information Base) associated with the NLM and the SNMP
  1465. Agent on the server. Any SNMP management station can access the
  1466. registered NLM's MIB by using the SNMP Agent as a proxy agent for
  1467. the developers agent. Developers benefit from the SNMP
  1468. Agent through its mechanism of using the NetWare platform for
  1469. network management. End users benefit since they have less to learn
  1470. beyond NetWare and the usage of NLMs.
  1471.  
  1472. As part of Novell's ongoing commitment to SNMP and developers
  1473. already using the NetWare Network Management Toolkit, toolkit users
  1474. will receive the NMS SDK as well as any future updates.
  1475.  
  1476. You must be a member of a Novell Developers' Program to purchase
  1477. the NetWare Management System SDK.
  1478.  
  1479.  
  1480.  
  1481. *********************************************
  1482. Five New Development Tools Announced
  1483. *********************************************
  1484.  
  1485. At NetWorld Boston, Novell announced the availability of five
  1486. NetWare-enabled third party development tools:
  1487.  
  1488. *    Two C++ compilers
  1489. *    A FORTRAN compiler
  1490. *    A tool that facilitates application connectivity
  1491. *    A breakout switch and interface card for programming and
  1492.      debugging
  1493.  
  1494. The new compilers include the WATCOM C++ compiler, Draiken Software
  1495. Inc.'s INTEK C++ v2.1 32-bit compiler, and WATCOM FORTRAN 77/386
  1496. compiler.
  1497.  
  1498. Additional tools announced include NetWorks! Developer, a
  1499. productivity tool that enables developers to hot link DDE-enabled
  1500. applications over  Novell's IPX without learning any new syntax or
  1501. commands, and STOP!, a simple non-maskable interrupt generator that
  1502. NetWare developers can use in conjunction with debuggers or user
  1503. programs.
  1504.  
  1505. For more information on these tools, developers should contact the
  1506. individual third-party companies as follows:
  1507.  
  1508. *    WATCOM, Sales Department at (519) 886-3700 or (800) 265-4555
  1509. *    Draiken Software, Inc. at (503) 222-5417
  1510. *    Symbiotics, Inc. at (617) 876-3635 or (800) 989-9174
  1511. *    Alpha Logic Technologies, Inc. at (206) 644-3094
  1512.  
  1513.  
  1514.  
  1515. *********************************************
  1516. SMF v71 SDK Meets MHS Developer Requirements
  1517. *********************************************
  1518.  
  1519. The NetWare SMF v71 SDK provides everything you need to develop
  1520. applications and gateways that provide messaging services in
  1521. NetWare MHS environments, including access to message routing and
  1522. messaging directory services. NetWare SMF, the native API to
  1523. Novell's NetWare MHS product line, offers simplicity, reliability,
  1524. and inherent multiplatform support. The SDK documents the newest
  1525. generation messaging API and builds on earlier versions to meet
  1526. developer needs for unlimited recipients, unlimited message size,
  1527. expanded distribution lists, and long names with hierarchical
  1528. mulitpart workgroups.
  1529.  
  1530. This SDK includes one copy of the 20-mailbox version of NetWare
  1531. Global Messaging (NGM), one copy of the 100-mailbox version of NGM,
  1532. and the SMF v71 Programmer's Reference. The SMF v71 Programmer's
  1533. Reference documents the messaging APIs.
  1534.  
  1535. NetWare SMF is currently used by over 900 commercial and corporate
  1536. developers. Over 150 commercial applications and services are
  1537. available for an estimated 2.5 million installed MHS mailboxes.
  1538. These messaging applications range from electronic mail and network
  1539. fax service to workflow, scheduling, and forms processing.
  1540.  
  1541.  
  1542.  
  1543. *********************************************
  1544. 1993 Begins with New Novell Corporate Developers' Program
  1545. *********************************************
  1546.  
  1547. In response to the unique development, implementation, and
  1548. maintenance requirements developers encounter within large
  1549. corporations, Novell will deliver the Novell Corporate Developers'
  1550. Program in the second quarter of 1993.
  1551.  
  1552. This program is designed to facilitate and accelerate the
  1553. development of distributed applications that support, exploit, and
  1554. enhance the NetWare platform in the corporate environment. The
  1555. program will initially be available worldwide with local
  1556. implementations in the U.S., U.K., France, and Germany, with
  1557. additional markets to follow.
  1558.  
  1559. Membership in this program is available through an annual
  1560. subscription and is targeted for large corporations developing
  1561. industrial-strength applications on the NetWare platform for
  1562. internal use. Members of the Novell Corporate Developers' Program
  1563. are entitled to all the benefits available through the Novell
  1564. Professional Developers' Program, Univel Professional Developers'
  1565. Program with additional benefits such as project support, system
  1566. assessment, additional products and development tools, product
  1567. support, and education.
  1568.  
  1569.  
  1570. Project Support
  1571.  
  1572.      Each program member is assigned an account representative who
  1573.      is familiar with the member's environment and project and who
  1574.      acts as a liaison to other groups within Novell and Univel.
  1575.      In order to better determine product focus for corporate
  1576.      developers, members are also invited to Novell and Univel
  1577.      technical forums, including executive briefings, focus groups,
  1578.      and product strategy meetings. In addition, membership in the
  1579.      Novell Corporate Developers' Program includes admission to
  1580.      BrainShare, Novell's annual technical conference.
  1581.  
  1582.  
  1583. Novell System Assessment
  1584.  
  1585.      Members will be provided system assessment services by
  1586.      Novell's Consulting Services (NCS). Upon request and at no
  1587.      additional charge, program members will be invited to review
  1588.      their existing implementation, business and system needs,
  1589.      project priorities, goals and objectives, and timelines with
  1590.      NCS engineering staff.
  1591.  
  1592.      With the information from the program member, NCS engineers
  1593.      will use their experience and knowledge of Novell's products
  1594.      to provide a project recommendation in the form of a statement
  1595.      of work. This statement of work can be used as a roadmap by
  1596.      the program member to facilitate their own development effort
  1597.      or to enlist outside consulting services through Novell's
  1598.      consulting services group and partners.
  1599.  
  1600.  
  1601. Development Products and Tools
  1602.  
  1603.      Members of Novell's Corporate Developers' Program are provided
  1604.      with a development copy of Novell's NetWare 2.x, 3.x, or 4.0
  1605.      or NetWare J, and a copy of UnixWare Personal Edition.
  1606.  
  1607.      Development copies of the NetWare operating systems are
  1608.      provided to members to facilitate prototyping, development,
  1609.      and testing of new applications without impacting existing
  1610.      business systems. Based on their particular development
  1611.      efforts, members may also select any ten Novell SDKs from the
  1612.      full list of available SDK products including the UnixWare SDK
  1613.      bundled with UnixWare Application Server.
  1614.  
  1615.      Program members will also receive updates to any of the Novell
  1616.      products they select through the program, ensuring that the
  1617.      application development effort for the NetWare platform is
  1618.      always with the most advanced and current technologies.
  1619.  
  1620.  
  1621. Development Product Support
  1622.  
  1623.      Novell's Developer Support Group offers Novell Corporate
  1624.      Developers' Program members priority access to customer
  1625.      support representatives and support engineers. Support calls
  1626.      from program members will be acknowledged within four hours
  1627.      (during normal business hours). In addition, program members
  1628.      have access to an assigned technician for the duration of the
  1629.      support incident.
  1630.  
  1631.  
  1632. Developer Education
  1633.  
  1634.      The effective transfer of Novell expertise to developers is
  1635.      vital for successful product use and for accelerating the
  1636.      application development timeline. As part of the program,
  1637.      members may attend three Novell technical education
  1638.      development classes throughout the subscription year.
  1639.  
  1640.  
  1641. Ongoing Development Support
  1642.  
  1643.      Ongoing development support is provided to Novell Corporate
  1644.      Developers' Program members, including access to the NOVDEV
  1645.      private forum on CompuServe, the Univel Developer Bulletin
  1646.      board, admission to the Advisory Council meetings, Novell
  1647.      developer publications, and all other services offered through
  1648.      Novell developer programs.
  1649.  
  1650.  
  1651. For More Information
  1652.  
  1653.      For additional information on development tools, developer
  1654.      support programs, and the Novell Corporate Developers'
  1655.      Program, call 1-800-NETWARE or 1-801-429-5588 (in the U.S. and
  1656.      Canada), or contact your local international Novell office.
  1657.  
  1658.  
  1659.  
  1660. *********************************************
  1661. *********************************************
  1662. NOVELL DEVELOPER EDUCATION
  1663. *********************************************
  1664. *********************************************
  1665.  
  1666. Novell Developer Education offers several courses for developers
  1667. who use Novell's development & database tools, including NetWare
  1668. SQL, Btrieve, Xtrieve PLUS, and the NetWare Client APIs.
  1669.  
  1670.  
  1671. 904: Btrieve: An Overview
  1672.  
  1673.      This new course provides a general overview of NetWare Btrieve
  1674.      v6.x and its new features. It covers file structures,
  1675.      indexing, data integrity, record and file locking, caching,
  1676.      operating modes, segmented keys, backward compatibility and
  1677.      utilities.
  1678.  
  1679.  
  1680. 905: Programming with Btrieve
  1681.  
  1682.      This course has been enhanced to cover all Btrieve operations
  1683.      & environments. It provides a complete introduction to
  1684.      Novell's server-based record manager. 50% of class time is
  1685.      spent in programming workshops. Working knowledge of C, BASIC,
  1686.      Pascal, or COBOL required. Prerequisite: 904: Btrieve: An
  1687.      Overview.
  1688.  
  1689.  
  1690. 907: Xtrieve PLUS
  1691.  
  1692.      This course has been updated to include new features
  1693.      introduced with NetWare SQL v3.0. It teaches developers to use
  1694.      Xtrieve PLUS as a Btrieve or NetWare SQL programming utility.
  1695.      Trains users of Btrieve- or NetWare SQL-based database
  1696.      applications to work effectively with this menu driven
  1697.      utility.
  1698.  
  1699.  
  1700. 911: NetWare Database Administrator
  1701.  
  1702.      This new course gives a complete, hands-on look at installing
  1703.      and configuring NetWare SQL and NetWare Btrieve. It covers the
  1704.      basics of ANSI Standard Structured Query Language (SQL),
  1705.      focusing on NetWare SQL and key database features like
  1706.      security, referential integrity (RI), database design, data
  1707.      normalization and performance.
  1708.  
  1709.  
  1710. 912: Programming with NetWare SQL
  1711.  
  1712.      This new course is designed for developers and experienced
  1713.      network and database administrators who will be developing
  1714.      NetWare SQL applications or enhancing existing Btrieve
  1715.      applications with NetWare SQL. It provides an in-depth look
  1716.      at the functionality of NetWare SQL and discusses optimizing
  1717.      database systems for development of efficient applications
  1718.      using Novell database tools.
  1719.  
  1720.  
  1721. 930: Developing NetWare Loadable Modules (NLMs)
  1722.  
  1723.      This course introduces C programmers to server-based
  1724.      application development in the 32-bit NetWare 3.x environment.
  1725.      It covers basic concepts for writing server-based C
  1726.      applications that access the NetWare 3.x C library (CLib).
  1727.      Requires working knowledge of the C language.
  1728.  
  1729.  
  1730. 940: NetWare Programming: Basic Services
  1731.  
  1732.      This new lab-oriented class (40 percent lab work) introduces
  1733.      NetWare programming concepts. It covers topics such as bindery
  1734.      services, file system services, print services, queue
  1735.      management, connection and file-server services, and
  1736.      accounting and synchronization services. This class requires
  1737.      knowledge of the C programming language.
  1738.  
  1739.  
  1740. 945: NetWare Programming: Protocol Support
  1741.  
  1742.      This new class covers protocol support features. It also
  1743.      discusses network programming concepts and techniques for
  1744.      developing client-side applications, including Service
  1745.      Advertising Protocol (SAP) IPX/SPX, diagnostics, NetBIOS, TLI,
  1746.      and Named Pipes. This class requires strong knowledge of the
  1747.      C programming language.
  1748.  
  1749.  
  1750. To obtain information on pricing, location, scheduling, & course
  1751. content for classes held in the US, call 1-800-233-3382,
  1752. 1-801-429-5508 or 1-800-NETWARE. Customers outside of the US should
  1753. call 1-801-429-5508. For information on availability, location, and
  1754. prices of classes outside of the US, contact your local Novell
  1755. office.
  1756.  
  1757.  
  1758.  
  1759. *********************************************
  1760. *********************************************
  1761. FUN AND FACTS
  1762. *********************************************
  1763. *********************************************
  1764.  
  1765. Test your developing skills with the development products by taking
  1766. our Fun & Facts quiz. (See the end of this section for answers.)
  1767.  
  1768. 1.   What is the bandwidth of the current Token Ring technology?
  1769.  
  1770.      A.   Either 4 or 8 MB/sec.
  1771.      B.   Either 4 or 16 MB/sec
  1772.      C.   Either 8 or 16 MB/sec.
  1773.  
  1774. 2.   The NetWare C Interface for DOS function SaveDirectoryHandle()
  1775.      can be used to save temporary directory handles.
  1776.  
  1777.      A.   True
  1778.      B.   False
  1779.  
  1780. 3.   What was the original name of the "Windows NT" operating
  1781.      system?
  1782.  
  1783.      A.   Windows v4.0
  1784.      B.   Windows II v1.0
  1785.      C.   OS/2 v3.0
  1786.  
  1787. 4.   Which file does NetWare SQL v3.0 use to store the names of the
  1788.      named databases?
  1789.  
  1790.      A.   NAMES.DB
  1791.      B.   DBNAMES.CFG
  1792.      C.   NAMEDDB.CFG
  1793.  
  1794. 5.   When a Btrieve file has a key of type Lstring, if the first
  1795.      byte is set to NULL and the rest of the bytes in the key are
  1796.      not set to NULL, Btrieve does not treat that key as a NULL
  1797.      key.
  1798.  
  1799.      A.   True
  1800.      B.   False
  1801.  
  1802. 6.   Event Service Routines (ESRs) are supported in the (NLM)
  1803.      environment?
  1804.  
  1805.      A.   True
  1806.      B.   False
  1807.  
  1808. 7.   NetWare SQL v3.0 can access Btrieve files on both local and
  1809.      network drives.
  1810.  
  1811.      A.   True
  1812.      B.   False
  1813.  
  1814. *********************************************
  1815. FUN AND FACTS ANSWERS
  1816.  
  1817. 1.   B
  1818. 2.   B
  1819. 3.   C
  1820. 4.   B
  1821. 5.   A
  1822. 6.   A
  1823. 7.   B
  1824.  
  1825. *********************************************
  1826.  
  1827.  
  1828.  
  1829. *********************************************
  1830. *********************************************
  1831. CURRENTLY SUPPORT VERSIONS OF NOVELL PRODUCTS
  1832. *********************************************
  1833. *********************************************
  1834.  
  1835. Communication Products
  1836.  
  1837.      NetWare for SAA                                        1.2
  1838.      NetWare 3270 LAN Workstation for DOS                   2.0
  1839.      NetWare 3270 LAN Workstation for Macintosh             1.0
  1840.      NetWare 3270 LAN Workstation for Windows               1.1
  1841.      NetWare Access Server (NAS)                            1.2
  1842.      NetWare Asynchronous Communication Services (NACS)     3.0
  1843.  
  1844.  
  1845. Database Products
  1846.  
  1847.      NetWare Btrieve (NLM)                                  5.15
  1848.      NetWare Btrieve (VAP)                                  5.15
  1849.      NetWare SQL (NLM)                                      3.00b
  1850.      NetWare SQL (VAP)                                      2.11
  1851.      Report Executive for DOS                               4.11a
  1852.      Report Executive for OS/2                              4.11a
  1853.      Xtrieve PLUS for DOS                                   4.11b
  1854.      Xtrieve PLUS for OS/2                                  4.11b
  1855.  
  1856.  
  1857. Development Products
  1858.  
  1859.      Btrieve for DOS                                        5.10a
  1860.      Btrieve for OS/2                                       5.10
  1861.      Btrieve for Windows                                    5.10
  1862.      NetWare C Interface for DOS                            1.2
  1863.      NetWare RPC for DOS                                    1.1
  1864.      NetWare RPC 386                                        1.1
  1865.      NetWare SQL Developer's Kit                            3.00b
  1866.  
  1867.      NetWare System Calls for DOS                           1.0
  1868.      NetWare System Interface Technical Overview            1.2
  1869.      Network C for DOS                                      2.0
  1870.      XQL for DOS                                            2.11
  1871.      XQL for OS/2                                           2.11
  1872.  
  1873.  
  1874. Internetworking Products
  1875.  
  1876.      NetWare WAN Links                                      2.0
  1877.      NetWare MultiProtocol Router                           2.0
  1878.  
  1879.  
  1880. NetWare Messaging
  1881.  
  1882.      NetWare Global Messaging                               1.0
  1883.      NetWare MHS Personal Ed.                               1.5p
  1884.      NetWare MHS 10-User                                    1.5p
  1885.      NetWare MHS 50-User                                    1.5b
  1886.      NetWare MHS Unlimited-Users                            1.5n
  1887.  
  1888.  
  1889. NetWare Operating System Products
  1890.  
  1891.      NetWare 3.x                                            3.11
  1892.      NetWare 2.x                                            2.2
  1893.      NetWare NFS                                            1.2
  1894.      NetWare Runtime
  1895.      NetWare FTAM                                           1.2
  1896.      NetWare for Macintosh (NLM)                            3.011
  1897.      NetWare Name Services
  1898.  
  1899.  
  1900. Network Management Products
  1901.  
  1902.      LANalyzer for NetWare                             1.0
  1903.      NetWare Services Manager                          1.1
  1904.      LANalyzer Kit for Ethernet Networks               3.11a
  1905.      LANalyzer Kit for 4/16 Mbps
  1906.           Token Ring Networks                          3.11a
  1907.      LANalyzer Kit for Ethernet & 4/16 Mbps
  1908.           Token Ring Networks                          3.11a
  1909.  
  1910.  
  1911. Software Developer's Kits
  1912.  
  1913.      Btrieve v6.0 Developer's Kit Supplement           1.0
  1914.      LAN WorkPlace for DOS Toolkit                     4.0
  1915.      LAN WorkPlace for Macintosh Toolkit               1.2
  1916.      LAN WorkPlace for OS/2 Toolkit                    3.0
  1917.      MacIPX                                            1.0a5
  1918.      NASI: Programmer Reference Manual
  1919.  
  1920.      NetWare AppleTalk Interface for NLMs              1.0
  1921.      Network C for NLMs                                2.0 (e)
  1922.      NetWare C Interface for Macintosh                 1.3
  1923.      NetWare C Interface for Windows                   1.3
  1924.      NetWare Client SDK                                1.0a
  1925.      NetWare for SAA LU6.2 Tools                       Feb 92
  1926.  
  1927.      NetWare Management System                         1.0b
  1928.      NetWare Network Management Toolkit                1.0
  1929.      NetWare OS/2 Developer's Kit                      2.0
  1930.      NetWare SMF v71 Developer's Kit                   1.0
  1931.      NetWare 3270 Tools                                1.6
  1932.      NetWare TIRPC for DOS and NLMs                    1.0
  1933.  
  1934.      NLM SDK for NetWare 4.0                           1.0a
  1935.      Palm DOS SDK                                      1.0
  1936.  
  1937.  
  1938.  
  1939. *********************************************
  1940. *********************************************
  1941. REQUESTER VERSIONS
  1942. *********************************************
  1943. *********************************************
  1944.  
  1945. NetWare Shells and Requesters
  1946.  
  1947.      DOS Shell                          3.31
  1948.      IPX (DOS)                          3.31
  1949.      VIPX.386                           1.14
  1950.      NetWare Requester for OS/2         2.0
  1951.      NETWARE.DRV (Windows)              2.0
  1952.      VNETWARE.386 (Windows)             1.04
  1953.  
  1954.  
  1955. NetWare SQL                             VAP       NLM
  1956.  
  1957.      Requester for DOS                  2.12a     3.00b
  1958.      Requester for OS/2                 2.11      3.00b
  1959.      Req. Interface for Windows v3.0    2.13      3.00b
  1960.  
  1961.  
  1962. NetWare Btrieve v5.15
  1963.  
  1964.      Requester for DOS                       6.0b
  1965.      Requester for OS/2                      6.0b
  1966.      Requester Interface for Windows v3.0    6.0c
  1967.  
  1968.  
  1969.  
  1970. *********************************************
  1971. *********************************************
  1972. CONTACTING NOVELL
  1973. *********************************************
  1974. *********************************************
  1975.  
  1976. To contact Developer Support, call 1-800-NETWARE
  1977. (1-800-638-9273), or 1-801-429-5588. Be prepared to give the
  1978. support operator your open incident reference number. Developer
  1979. Support questions may also be sent by fax to 1-512-794-1775.
  1980.  
  1981. Many international distributors provide technical support. Please
  1982. contact your distributor or local Novell office (see list on back
  1983. cover) for more information on international support options.
  1984.  
  1985. Software patches may be obtained from Novell's NetWire forum on
  1986. CompuServe (NOVLIB, LIB 7), or by contacting Developer Support and
  1987. specifying the patches you need by product name.
  1988.  
  1989. Novell database and development products can be obtained through
  1990. Novell Authorized Resellers, or by calling 1-800-NETWARE or
  1991. 1-801-429-5588.
  1992.  
  1993. Software Developer's Kits (SDKs) are available only through
  1994. Novell's Developers' Programs. Call 1-800-NETWARE, or
  1995. 1-801-429-5588.
  1996.  
  1997. For more information on Novell Labs' development tools, education
  1998. classes and product certification, call 1-800-453-1267 or
  1999. 1-801-429-5544.
  2000.  
  2001. For more information on Novell education classes,
  2002. call 1-800-NETWARE or 1-801-429-5588.
  2003.  
  2004.  
  2005.  
  2006. *********************************************
  2007. *********************************************
  2008. ACKNOWLEDGEMENTS
  2009. *********************************************
  2010. *********************************************
  2011.  
  2012. Publisher: Mad Poarch
  2013.  
  2014. Editor:    Kirk R. Humphries
  2015.  
  2016. Design:    Creative Services, Provo
  2017.  
  2018. Contributing authors: Gaurang Amin
  2019.                       Linda Anderson
  2020.                       Michael Eisa
  2021.                       Neda Eslami
  2022.                       Jack Gumaer
  2023.                       Ross Hopson
  2024.                       Sudz Khawaja
  2025.                       Nancy Kromar
  2026.                       Matt Pinsonneault
  2027.                       Bob Quinlan
  2028.                       Clint McVey
  2029.                       Randy Reddy
  2030.                       Holly Roff
  2031.                       Mike Shoemaker
  2032.                       Aslam Tejani
  2033.  
  2034. Special thanks to the Developer Support, Development, Developer
  2035. Relations, Product Marketing, and Marketing Communications staff
  2036. who contributed time and valuable input.
  2037.  
  2038.  
  2039.  
  2040. *********************************************
  2041. *********************************************
  2042. NOVELL OFFICES
  2043. *********************************************
  2044. *********************************************
  2045.  
  2046. Novell, Inc.
  2047. Corporate Headquarters
  2048. Brazil, India, Pakistan Sales Office
  2049. 122 East 1700 South
  2050. Provo, Utah 84606-6194 USA
  2051. Tel. 1 (801) 429-7000
  2052. FAX  1 (801) 429-3944
  2053.  
  2054. *********************************************
  2055.  
  2056. Novell International Headquarters
  2057. 2180 Fortune Drive
  2058. San Jose, CA 95131
  2059. USA
  2060. Tel. 1 (408) 434-2300
  2061. FAX  1 (408) 434-8697
  2062.  
  2063. *********************************************
  2064.  
  2065. Novell Australia
  2066. Level 2
  2067. 2 Help Street
  2068. Chatswood NSW 2067
  2069. AUSTRALIA
  2070. Tel. 61 (2) 413-3077
  2071. FAX  61 (2) 413-3116
  2072.  
  2073. *********************************************
  2074.  
  2075. Novell Benelux
  2076. Excelsiorlaan 13
  2077. 1930 Zaventem
  2078. BELGIUM
  2079. Tel. 32 (2) 7250200
  2080. FAX  32 (2) 7250311
  2081.  
  2082. *********************************************
  2083.  
  2084. Novell France
  2085. Tour Anjou
  2086. 33, Quai De Dion-Bouton
  2087. 92814 Puteaux Cedex
  2088. FRANCE
  2089. Tel. 33 (1) 4775-0909
  2090. FAX  33 (1) 4778-9472
  2091.  
  2092. *********************************************
  2093.  
  2094. Novell Germany
  2095. Willstätter Strasse 13
  2096. 4000 Düsseldorf 11
  2097. GERMANY
  2098. Tel. 49 (211) 59730
  2099. FAX  49 (211) 5973250
  2100.  
  2101. *********************************************
  2102.  
  2103. Novell Hong Kong
  2104. China Resources Bldg.
  2105. 26 Harbour Rd.      Room 4601-5
  2106. Wanchai
  2107. HONG KONG
  2108. Tel. 852 8272223
  2109. FAX  852 8276555
  2110.  
  2111. *********************************************
  2112.  
  2113. Novell Japan
  2114. Toei Mishuku Bldg.3F
  2115. 1-13-1 Mishuku
  2116. Setagaya-ku, Tokyo 154
  2117. JAPAN
  2118. Tel. 81 (3) 5481-1161
  2119. FAX  81 (3) 5481-1855
  2120.  
  2121. *********************************************
  2122.  
  2123. Novell Latin America
  2124. 2180 Fortune Drive
  2125. San Jose, CA 95131
  2126. USA
  2127. Tel. 1 (408) 321-1476/1477
  2128. FAX  1 (408) 747-4940
  2129.  
  2130. *********************************************
  2131.  
  2132. Novell Mexico
  2133. Insurgentes Sur
  2134. No. 1160 P.H.
  2135. Mexico D.F. 03100
  2136. MEXICO
  2137. Tel. 52 (5) 575 5998/4192
  2138. FAX  52 (5) 559 0133
  2139.  
  2140. *********************************************
  2141.  
  2142. Novell Singapore
  2143. Level 36
  2144. Hong Leong Bldg.
  2145. 16 Raffles Quay
  2146. Singapore 0104
  2147. SINGAPORE
  2148. Tel. (65) 322-8503
  2149. FAX  (65) 321-8966
  2150.  
  2151. *********************************************
  2152.  
  2153. Novell Spain
  2154. Paseo Castellana, 40bis
  2155. 28046 Madrid
  2156. SPAIN
  2157. Tel. 34 (1) 577-4941
  2158. FAX  34 (1) 577-9053
  2159.  
  2160. *********************************************
  2161.  
  2162. Novell Sweden
  2163. Kottbyjatan 7
  2164. 16475 Kista
  2165. SWEDEN
  2166. Tel. 46 (8) 703 2350
  2167. FAX  46 (8) 703 9434
  2168.  
  2169. *********************************************
  2170.  
  2171. Novell Switzerland
  2172. vor Ort 21
  2173. CH-8104 Weiningen-Zurich
  2174. SWITZERLAND
  2175. Tel. 41 (1) 750-0504
  2176. FAX  41 (1) 750-0957
  2177.  
  2178. *********************************************
  2179.  
  2180. Novell United Kingdom
  2181. Avon House, Sweetwell Road
  2182. Bracknell, Berkshire
  2183. RG12 1HH
  2184. UNITED KINGDOM
  2185. Tel. 44 (344) 860 400
  2186. FAX  44 (344) 860 353
  2187.  
  2188. *********************************************
  2189.  
  2190. Novell, the N design, NetWare, Btrieve, XQL, LAN WorkPlace and
  2191. LANalyzer are registered trademarks; NetWare Loadable Module (NLM),
  2192. NetWare Global Messaging, NetWare System Calls for DOS, NetWare
  2193. Runtime, NetWare SQL, NetWare Btrieve, NetWare C Interface for DOS,
  2194. NetWare System Interface Technical Overview, NetWare RPC, NetWare
  2195. RPC 386, NetWare LU6.2, Report Executive, NetWare MHS, NetWare
  2196. Asynchronous Communication Services (NACS), NetWare Management
  2197. System, Professional Development Series, NetWare 3270 LAN
  2198. Workstation and Xtrieve PLUS are trademarks; and NetWire and
  2199. Professional Developers' Program are service marks of Novell, Inc.
  2200. IBM and OS/2 are registered trademarks, and NetBIOS and SAA are
  2201. trademarks of International Business Machines Corporation.
  2202.  
  2203. Microsoft is a registered trademark, and Windows is a trademark of
  2204. Microsoft Corporation.
  2205.  
  2206. Apple, AppleTalk, HyperCard and Macintosh are registered trademarks
  2207. of Apple Computer, Inc.
  2208.  
  2209. CompuServe is a registered trademark of CompuServe Corporation.
  2210.  
  2211. NFS and Solaris are registered trademarks, and SunSoft is a
  2212. trademark of Sun Microsystems, Inc.
  2213.  
  2214. UNIX is a trademark of UNIX Systems Laboratories, Inc., a
  2215. subsidiary of AT&T. Univel is trademark of Univel, Inc.
  2216.  
  2217. (c) 1993 Novell, Inc. All rights reserved.
  2218.  
  2219. *********************************************
  2220. Professional Development Series
  2221. B  U  L  L  E  T  S
  2222. JANUARY 1993
  2223. END OF FILE
  2224. *********************************************
  2225.